package com.cctc.config.advice;

import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

/**
 * @Name GlobalWebExceptionAdvice
 * @Description: 全局 Web 异常捕获与处理
 * [说明]
 *   在 Spring MVC 中对 @ExceptionHandler 方法的支持是建立在 DispatcherServlet 级别的 HandlerExceptionResolver 机制上的。
 * @Author: lichao
 * @Email: li2chao@126.com
 * @Date: 2024-01-24 17:59:42
 **/
@RestControllerAdvice(basePackages = "com.cctc.controller")
public class GlobalWebExceptionAdvice {

    /**
     * JSR303 数据校验异常处理
     *
     * @param e 捕获到的异常
     * @return com.atguigu.gulimall.common.utils.R 错误信息
     * @author lichao
     * @email li2chao@126.com
     * @date 2023/12/31 17:20:22
     */
    @ExceptionHandler(value = MethodArgumentNotValidException.class)
    public Object handleJSR303ValidException(MethodArgumentNotValidException e) {
        return null;
    }

    /**
     * 文件上传异常
     * @param e 捕获到的异常
     * @return java.lang.Object 错误信息
     * @author lichao
     * @email li2chao@126.com
     * @date 2024/01/24 18:04:05
     */
    @ExceptionHandler(value = IOException.class)
    public Object handleFileUploadException(IOException e) {
        return null;
    }

    /**
     * 缺省异常处理
     *
     * @param throwable 捕获到的异常
     * @return com.atguigu.gulimall.common.utils.R 错误信息
     * @author lichao
     * @email li2chao@126.com
     * @date 2023/12/31 17:48:17
     */
    @ExceptionHandler(value = Throwable.class)
    public Object defaultException(Throwable throwable) {
        return null;
    }

}

